/-app ...
TopLayout.ts
main.css
start.ts
/-files
/-imports
/-storage
/-typings
errors.js
functions.ts
index.html
try.js
x
 
1
module teapo.app {
2
  
3
  export class TopLayout {
4
    
5
    mainContent: HTMLElement = null;
6
    cm: CodeMirror = null;
7
    
8
    private _fileTree: files.FileTree;
9
    private _access: storage.StorageAccess = null;
10
    
11
    constructor() {
12
    }
13
  
14
    initWithMainContent(mainContent: HTMLElement) {
15
      this.mainContent = mainContent;
16
      this.cm = new CodeMirror(cmElem => {
17
​
18
        cmElem.style.width = '100%';
19
        cmElem.style.height = '100%';
20
        
21
        this.mainContent.innerHTML = '';
22
​
23
        this.mainContent.appendChild(cmElem);
24
​
25
      });
26
​
27
    }
28
    
29
    initWithFlyout(flyout: HTMLElement) {
30
      try {
31
        this._fileTree = new files.FileTree(flyout);
32
        var detect = new storage.indexedDB.StorageDetect();
33
        this._loadTree(detect, flyout);
34
      }
35
      catch (error) {
36
        alert(error + ' ' + error.stack);
37
      }
38
    }
39
  
40
    private _loadTree(
41
      detect: storage.StorageDetect,
42
      treeHost: HTMLElement) {
43
    
44
      var uniqueKey = '4';
45
      detect.detect(
46
        uniqueKey,
47
        (error, metadata, access) => {
48
          if (error) {
49
            this._initAfterLoad(error, treeHost);
50
            return;
51
          }
52
  
53
          var documentEditedUTC = this._getDocumentEditedUTC();
54
          if (documentEditedUTC >= metadata.editedUTC) {
55
            // delete everything in storage
56
            var deleteChange: storage.PropertiesByFullPath = {};
57
            for (var i = 0; i < metadata.files.length; i++) {
58
              deleteChange[metadata.files[i]] = null;
59
            }
60
            access.update(
61
              deleteChange,
62
              documentEditedUTC,
63
              (error) => {
64
                if (!error)
65
                  this._access = access;
66
                this._initAfterLoad(error, treeHost);
67
              });
68
          }
69
          else {
70
            this._access.read(metadata.files, (error, byFullPath) => {
71
              this._fileTree.access.update(byFullPath, metadata.editedUTC);
72
              
73
              this._initAfterLoad(null, treeHost);
74
            });
75
          }
76
        });
77
    
78
    }
79
​
80
    private _getDocumentEditedUTC() { 
81
      return 0;
82
    }
83
  
84
    private _initAfterLoad(error: Error, treeHost: HTMLElement) {
85
      treeHost.addEventListener('click', (evt) => this._onclick(evt), true);
86
    }
87
  
88
    private _onclick(evt) {
89
    }
90
    
91
  }
92
  
93
}
88:0